import 'package:flutter/material.dart';

class Home extends StatelessWidget {
  const Home({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("SingleChildScrollView Demo"),
        actions: [IconButton(onPressed: () {}, icon: Icon(Icons.share))],
      ),
      body: SingleChildScrollViewDemo(),
    );
  }
}

//SingleChildScrollView : ScrollView
//scrollDirection: 滚动方向 垂直或者水平
//reverse: 滚动的起点, false 从头, true 从尾

//physics: 物理效果, 指iOS的弹性效果 和 安卓的微光效果, 默认情况下, flutter会根据具体平台分别使用不同的效果, 如果我们想在不同的平台统一这个效果, 可以自己设置
// physics的两种类型
// ClampingScrollPhysics：列表滑动到边界时将不能继续滑动，通常在Android 中 配合 GlowingOverscrollIndicator（实现微光效果的组件） 使用。
// BouncingScrollPhysics：iOS 下弹性效果。

// controller：此属性接受一个ScrollController对象。ScrollController的主要作用是控制滚动位置和监听滚动事件。

// SingleChildScrollView只应在期望的内容不会超过屏幕太多时使用，这是因为SingleChildScrollView不支持基于 Sliver 的延迟加载模型，


class SingleChildScrollViewDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        SingleChildScrollView(
          scrollDirection: Axis.horizontal,
          padding: EdgeInsets.fromLTRB(15, 10, 15, 5),
          reverse: true,
          physics: BouncingScrollPhysics(),
          child: Row(
            children: [
              _buttons("按钮1"),
              _buttons("按钮2"),
              _buttons("按钮3"),
              _buttons("按钮4"),
              _buttons("按钮5"),
              _buttons("按钮6"),
              _buttons("按钮7")
            ],
          ),
        ),
      ],
    );
  }

  Widget _buttons(String text) {
    return Container(
      child: OutlinedButton(
        onPressed: () {},
        child: Text(text),
      ),
    );
  }
}
